package com.bdqn.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.ServletContext;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Method;
import java.nio.channels.MulticastChannel;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

/**
 * @Author 27435
 * @Date 2025/1/814:38
 * @Version 1.0
 */

@Controller
public class UploadFilsController {

    @Autowired
    private ServletContext servletContext;

    @RequestMapping(path = {"/ups"}, method = RequestMethod.POST)
    public String uploadFiles(List<MultipartFile> files, Model model) throws IOException {
        // 多文件上传
        List<String> paths = new ArrayList<>();
        String virtualPath = "/upload";
        String realPath = servletContext.getRealPath(virtualPath);
        for (MultipartFile file : files) {
            System.out.println(file.getOriginalFilename());
            // 处理文件上传
            String originalFilename = file.getOriginalFilename();  // 获取上传文件的名字
            // 使用UUID给文件重命名，并且去掉UUID的四个“-”
            String fileName = UUID.randomUUID().toString().replace("-", "");
            // 获取文件的后缀
            String exName = originalFilename.substring(originalFilename.lastIndexOf("."));
            // 拼接新的文件名称
            String newFileName = fileName + exName;
            // 创建File类型的对用于文件转存
            File filePath = new File(realPath, newFileName);
            if (!filePath.getParentFile().exists()){
                // 如果文件夹不存在就新建一个
                filePath.getParentFile().mkdirs();
            }
            // 调用transferTo()方法实现文件转存  将上传文件复制到目标路径
            file.transferTo(filePath);
            // 为了让下一个页面能够将图片展示出来，将图片访问路径存入模型，把访问图片的路径准备好
            String picPath = servletContext.getContextPath() + "/upload/" + newFileName;
            paths.add(picPath);
        }
        model.addAttribute("paths", paths);
        return "success1";
    }
}
